【Oracle】什么?你在物理机上安装Oracle总失败?那就试试Docker吧!!
点击上方蓝色“冰河技术”,关注并选择“设为星标”
持之以恒,贵在坚持,每天进步一点点!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
https://github.com/sunshinelyz/mykit-delay
PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码。
写在前面
有些小伙伴按照我写的《【Oracle】什么?作为DBA,你竟然不会安装Oracle??》一文,在CentOS 8.0服务器上来安装Oracle,总是说:安装不成功!但是我确实也是在CentOS 8.0服务器上安装的啊!没办法,如果在物理机上安装总是失败,那我们就来试试在Docker上来安装Oracle吧,在Docker上安装Oracle也要实现数据的持久化。
注意:Docker安装Oracle需要提前安装好Docker和docker-compose,这些基础环境的安装我就不在这篇文章中写了,后续我会将这些统一写到【云原生】专题。
采用 docker-compose 安装
1.创建相关文件
mkdir /usr/local/docker
cd /usr/local/docker
mkdir oracle
cd oracle
touch docker-compose.yml
2.docker-compose.yml 配置文件的内容如下
version: '3.1'
services:
master:
image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
container_name: oracle
privileged: true
ports:
- 1521:1521
3.启动容器,并进入容器
docker-compose up -d
docker exec -it oracle bash
4.配置环境,并创建一个用户,实现外部连接
cd /home/oracle # 进入到 oracle 用户目录
source .bash_profile # 加载 oracle 环境变量
$PATH # 查看 oracle 环境变量是否生效
sqlplus / as sysdba # 连接 oracle 数据库
alter user system identified by oracle; # 修改 DBA 账号的密码
alter user sys identified by oracle; # 修改 DBA 账号的密码
alter profile default limit password_life_time unlimited; # 设置密码为永不过期
create user test identified by oracle; # 创建一个 test 用户,密码 oracle
select * from dba_users t where t.username = 'TEST'; # 查询用户是否创建成功
grant connect, resource, dba to test; # 给用户授予连接和数据权限
5.相关配置(可省略)
grant select on V_$session to test;
grant select on V_$sesstat to test;
grant select on V_$statname to test;
show parameter deferred_segment_creation; -- 查看是否启用 true 为启动
alter system set deferred_segment_creation=false; -- 修改为不启用
show parameter deferred_segment_creation; -- 查看是否修改成功 false 未启用
6,使用 plsql 连接
账号:test
密码:oracle
连接:ip:1521/helowin
数据持久化
1.查看helowin实例
可以发现,helowin 的实例安装在:/home/oracle/app/oracle/oradata/helowin 目录下
2.拷贝数据到本地,并修改拥有者
docker cp oracle:/home/oracle/app/oracle/oradata/helowin /usr/local/docker/oracle/helowin
cd /usr/local/docker/oracle
chown -R 500.500 ./helowin # 500 500 是容器内 oracle 组合用户的 id
3.关闭容器
docker-compose down
4.重新启动容器,并在 docker-composr.yml 添加数据卷配置
version: '3.1'
services:
master:
image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
container_name: oracle
privileged: true
ports:
- 1521:1521
volumes:
- ./helowin:/home/oracle/app/oracle/oradata/helowin
5.查看启动日志
docker logs -f oracle
我们发现了一个错误,这是由于 oracle 为了数据安全,添加的版本验证
6.进入容器内,解决错误
docker exec -it oracle bash
cd /home/oracle # 进入到 oracle 用户目录
source .bash_profile # 加载 oracle 环境变量(每次进入容器都要加载配置文件)
# 删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件
rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
sqlplus / as sysdba # 以 dba 身份连接 oracle 数据库
shutdown immediate # 关闭数据库实例(这里会报错,不用管)
startup # 启动实例
7.问题解决
再次使用 plsql 连接,发现之前创建 test 用户可以连接,数据持久化顺利完成。
PS:Oracle镜像的 root 用户账号密码:root/helowin。
重磅福利
关注「 冰河技术 」微信公众号,后台回复 “设计模式” 关键字领取《深入浅出Java 23种设计模式》PDF文档。回复“Java8”关键字领取《Java8新特性教程》PDF文档。回复“限流”关键字获取《亿级流量下的分布式限流解决方案》PDF文档,三本PDF均是由冰河原创并整理的超硬核教程,面试必备!!
好了,今天就聊到这儿吧!别忘了点个赞,给个在看和转发,让更多的人看到,一起学习,一起进步!!
写在最后
如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫!
后记:
记住:你比别人强的地方,不是你做过多少年的CRUD工作,而是你比别人掌握了更多深入的技能。不要总停留在CRUD的表面工作,理解并掌握底层原理并熟悉源码实现,并形成自己的抽象思维能力,做到灵活运用,才是你突破瓶颈,脱颖而出的重要方向!
你在刷抖音,玩游戏的时候,别人都在这里学习,成长,提升,人与人最大的差距其实就是思维。你可能不信,优秀的人,总是在一起。。
扫一扫或长按二维码
关注冰河技术微信公众号
如果你喜欢这篇文章,欢迎点赞和转发。
生活很美好,明天见(。・ω・。)ノ♡